﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BGCOP.CAVTOP.BUSINESSLAYER;
using BGCOP.CAVTOP.COMMON;

namespace BGCOP.CAVTOP.WINFORMS
{
    public partial class frmTipoUsuario : Form
    {
        private LogCls LogF = new LogCls();
        private SesionActual tu = new SesionActual();

        public frmTipoUsuario()
        {
            InitializeComponent();
        }

        private void frmTipoUsuario_Load(object sender, EventArgs e)
        {
            LogF.FilePath = System.IO.Path.GetDirectoryName(
      System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
            LlenaLista();
        }

        public void LlenaLista()
        {
            try
            {
                ModulosSoftware ms = new ModulosSoftware();
                chkPermisos.DataSource = ms.ListaModulos;
                TiposUsuarios a = new TiposUsuarios();
                listBox1.DataSource = a.ListarTodosLosTipos();
                listBox1.DisplayMember = "NombreTipoUsuario";
                listBox1.ValueMember = "idTipoUsuario";
                listBox1.SelectedIndex = -1;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message, "Sistema Control de Acceso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                LogF.Evento = "Error: " + ex.Message;
                LogF.AddEvent();
                //throw;
            }
            
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex == -1)
            {
                return;
            }
            TTipoUsuario tu = (TTipoUsuario)listBox1.SelectedItem;
            txtTipoUsuario.Text = tu.NombreTipoUsuario;
            string per = tu.permisos;
            //los permisos van de a 50 
            int i = 0;
            foreach (char c in per)
            {
                if (c == '1')
                {
                    //tiene permiso
                    chkPermisos.SetItemChecked(i, true);
                }
                else
                {
                    //no tiene permiso
                    chkPermisos.SetItemChecked(i, false);
                }
                i++;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            int i = 0;
            txtTipoUsuario.Text = "";
            for (i = 0; i < 50; i++)
            {
                chkPermisos.SetItemChecked(i, false);
            }
            txtTipoUsuario.Focus();
            listBox1.SelectedIndex = -1;
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex == -1)
            {
                //es un nuevo registro
                //validar si el nombre esta vacio
                if (txtTipoUsuario.Text.Length > 0)
                {
                    string permi = ObtienePermisos();


                    TiposUsuarios ttpu = new TiposUsuarios();
                    if (!ttpu.CrearTipoUsuario(txtTipoUsuario.Text, permi, tu.IdUsuarioActual))
                    {
                        LogF.Evento = "error al agregar tipoUsuario";
                        LogF.AddEvent();
                    }
                    listBox1.DataSource = ttpu.ListarTodosLosTipos();
                }
                else
                {
                    MessageBox.Show("Verifique la Informacion Suministrada.");
                    LogF.Evento = "Verifique la Informacion Suministrada. Campo tipo usuario vacio";
                    LogF.AddEvent();
                }

            }
            else
            {

                if (MessageBox.Show("Desea modificar el registro seleccionado?", "Gestion CAV12", MessageBoxButtons.YesNoCancel) == DialogResult.Yes)
                {
                    TiposUsuarios ttpu = new TiposUsuarios();
                    string permi = ObtienePermisos();
                    ttpu.ActualizarTipoUsuario(Convert.ToInt32(listBox1.SelectedValue), txtTipoUsuario.Text, permi,
                                               tu.IdUsuarioActual);
                    listBox1.DataSource = ttpu.ListarTodosLosTipos();
                }
            }
            
        }

        public string ObtienePermisos()
        {
            int i = 0;
            string permi = "";
            for (i = 0; i < 50; i++)
            {
                if (chkPermisos.GetItemChecked(i) == true)
                {
                    permi = permi + "1";
                }
                else
                {
                    permi = permi + "0";
                }
            }
            return permi;
        }
        
    }
}
